<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Day6课后作业</title>
</head>

<body>

</body>
<script>
    // 0.上课讲的知识点下去敲2遍
    // 1.从数组中随机取出一项（randomItemFromArray） [10,7,105,81,-10] => 7

    // 分析 -> 数组通过下标取元素  -> 随机取一个元素 -> 随机下标 -> 下标的范围(0 数组.length-1)

    // var arr = [10,7,105,81,-10];
    // var index = Math.round(Math.random()*(arr.length - 1));
    // var item = arr[index];
    // console.log(index,item);

    function randomItemFromArray(arr) {
        // var arr = [10,7,105,81,-10];
        var index = Math.round(Math.random() * (arr.length - 1));
        var item = arr[index];
        return item;
    }
    // var res = randomItemFromArray([10,7,105,81,-10]);
    // console.log(res);


    // 2.求数组中所有元素的和（addAllInArray）  [1,2,3] => 6

    // var list = [1,4,7,2,5,8,3,6,9];
    // var sum = 0;
    // for(var item of list){
    //     sum += item;    
    // }
    // console.log(sum);

    function addAllInArray(list) {
        // var list = [1,4,7,2,5,8,3,6,9];
        var sum = 0;
        for (var item of list) {
            sum += item;
        }
        // console.log(sum);
        return sum;
    }

    // var res = addAllInArray([1,2,3]);
    // console.log(res);


    // 3.求一组数的最大数和最小数（getOneFromArray） [10,7,105,81,-10] => [-10, 105]

    // var list = [2,5,8,3,6,9,1,4,7];

    // var min = list[0]; // 2
    // var max = list[0]; //2 

    // for(var i = 1;i<list.length;i++){ //后面的所有数
    //     var item = list[i];
    //     if(item < min){ // 存在比min还要小的值
    //         min = item;
    //     }
    //     if(item > max){ // 存在比max还要大的值
    //         max = item;
    //     }
    // }
    // console.log(min,max);

    function getOneFromArray(list) {
        // var list = [2,5,8,3,6,9,1,4,7];

        var min = list[0]; // 2
        var max = list[0]; //2 

        for (var i = 1; i < list.length; i++) { //后面的所有数
            var item = list[i];
            if (item < min) { // 存在比min还要小的值
                min = item;
            }
            if (item > max) { // 存在比max还要大的值
                max = item;
            }
        }
        // console.log(min,max);

        return [min, max];
    }


    var res = getOneFromArray([10, 7, 105, 81, -10]);
    // console.log(res);


    // 4.将数组的重复元素去掉，并返回新的数组（noRepeat） [1,2,3,3,3,3,3,2,3,1] => [1,2,3]

    function noRepeat(list) {
        // var list = [1, 2, 3, 3, 3, 3, 3, 2, 3, 1];
        var unique = [];
        for (var i = 0; i < list.length; i++) {
            var item = list[i]; //依次取出数组中的每一个元素
            // if (unique.includes(item) == false) { // 新数组中不存在
            //     unique.push(item);
            // }

            // !unique.includes(item) == true  =>  unique.includes(item) ==false 
            if (!unique.includes(item)) { // 新数组中不存在
                unique.push(item);
            }
        }
        // console.log(unique);
        return unique;
    }
    var res = noRepeat([1, 2, 3, 3, 3, 3, 3, 2, 3, 1]);
    // console.log(res);


    // 5.有一个从小到大排好序的数组。现输入一个数，要求按原来的规律将它插入数组中（insert） [2, 5, 6, 8]插入7  => [2, 5, 6, 7, 8]

    // var list = [2,5,6,8];
    // var char = 10;

    // var max = list[list.length - 1];
    // if(char > max){
    //     list.push(char);
    // }

    // for(var i = 0;i<list.length;i++){  // 每一个元素
    //     if(char > list[i] && char < list[i+1]){
    //         list.splice(i+1,0,char)
    //     }
    // }
    // console.log(list);


    function insert(list, char) {
        // var list = [2,5,6,8];
        // var char = 10;

        var min = list[0];
        if (char < min) {
            list.unshift(char);
        }

        var max = list[list.length - 1];
        if (char > max) {
            list.push(char);
        }

        for (var i = 0; i < list.length; i++) {  // 每一个元素
            if (char > list[i] && char < list[i + 1]) {
                list.splice(i + 1, 0, char)
            }
        }
        // console.log(list);
        return list;
    }

    var res = insert([2, 5, 6, 8], 7);
    // console.log(res);



    // 6.求一个的数组中比平均数大的数（getBiggerThanAverage）  [7, 21, -8, 35, 15] => [21, 35, 15]
    //求平均数=数组每项相加的和/数组长度
    //将数组每项与平均数对比，如果比平均数大，我就把放一个新数组里去

    // var list = [7, 21, -8, 35, 15];
    // var sum = addAllInArray(list);
    // var ave = sum / list.length;

    // var arr = [];
    // for (var item of list) {
    //     if (item > ave) {
    //         arr.push(item);
    //     }
    // }
    // console.log(ave, arr);

    function getBiggerThanAverage(list) {
        // var list = [7, 21, -8, 35, 15];
        var sum = addAllInArray(list);
        var ave = sum / list.length;

        var arr = [];
        for (var item of list) {
            if (item > ave) {
                arr.push(item);
            }
        }
        // console.log(ave, arr);
        return arr;
    }




    // 7.随机生成4位验证码（randomCode 范围[a-z|A-Z|0-9]）  => a5x9
    // 要求随机的字符 不重复

    // 字符范围
    // var list = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];

    // var str = "";
    // for (var i = 0; i < 4; i++) {
    //     var char = randomItemFromArray(list);
    //     str += char;
    // }
    // console.log(str);

    function randCode(list) {
        // var list = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];

        var str = "";
        for (var i = 0; i < 4; i++) {
            var char = randomItemFromArray(list);
            str += char;
        }
        // console.log(str);
        return str;
    }

    var res = randCode(['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']);
    console.log(res);







</script>

</html>